//
//  ReverseStackWithRecursive.cpp
//  CodeInterviewGuide_Book
//
//  Created by 刘振舟 on 2025/1/10.
//

#include <iostream>
#include <stack>

using namespace std;

int getAndRemoveLastElement(stack<int> &sta) {
    int x = sta.top();
    sta.pop();
    if (sta.empty()) {
        return x;
    } else {
        int last = getAndRemoveLastElement(sta);
        sta.push(x);
        return last;
    }
}

void reverse(stack<int> &sta) {
    if (sta.empty()) {
        return;
    }
    int x = getAndRemoveLastElement(sta);
    reverse(sta);
    sta.push(x);
}


int main() {
    int n, temp;
    cin  >> n;
    stack<int> sta;
    for (int i = 0; i < n; ++i) {
        cin >> temp;
        sta.push(temp);
    }
    reverse(sta);
    
    for (int i = 0; i < n; ++i) {
        if (i > 0) {
            cout <<  ' ';
        }
        cout << sta.top();
        sta.pop();
    }
    return 0;
}
